package com.vic.ascapeanalysis;


/*设置JVM的参数：
        -server -Xmx10m -Xms10m -XX:+DoEscapeAnalysis -XX:+PrintGC
        未进行逃逸分析的设置：
        -server -Xmx10m -Xms10m -XX:-DoEscapeAnalysis -XX:+PrintGC
在进行逃逸分析的运行结果中，只执行了9次就退出程序了。而未进行逃逸分析的结果是1360次，
就是说未进行逃逸分析的代码可以执行更多的调用次数。
换句话来讲，就是未进行逃逸分析的堆空间远大于进行逃逸分析后使用的栈空间，堆的空间大于栈，这就是根本原因。
        总结
        栈上分配可以提升代码性能，降低在多线程情况下的锁使用，但是会受限于其空间的大小。*/

public class StackOnTest {
    public static void alloc() {
        byte[] b = new byte[2];
        b[0] = 1;
    }

    public static void main(String[] args) {
        long b = System.currentTimeMillis();
        for (int i = 0; i < 100000000; i++) {
            alloc();
        }
        long e = System.currentTimeMillis();
        System.out.println(e - b);
    }

}